<?php


/**
 * @name 公共头文件
 * @abstract  包括一些配置项目  函数等
 * @author luderson.cn
 */

session_start();
header("Content-Type:text/html; charset=utf-8");

/* * *********************************
 * *******  全局配置信息    ***********
 * ********************************* */
$_cfg = array(
    'APP_NAME' => '证件快制 | 广西高技', // 应用名称
    'XINXIBIAO' => 'data/xinxibiao/', // 班级信息表存放位置，该表存放学生登录凭据
    'CHENGJIKU' => 'data/chengjiku/', // 成绩库文件夹位置
    'OBJECT_LINE' => 3, // 成绩表中科目名称所在的行,默认为第3行,一般不要改动。
    'NAME_COL' => 'B', // 成绩表中学生姓名所在的列,默认为B行,一般不要改动。
);

/**
 * @name 检查权限
 * @abstract
 */
function isLogin() {
    if (!$_SESSION['dzcj_std_islogin']) {
        header("Location:index.php?notice=" . urlencode('未登录或登录已失效！'));
    }
}

/**
 * 列出目录下的所有文件 子函数
 */
function dir_path($path) {
    $path = str_replace('\\', '/', $path);
    if (substr($path, -1) != '/')
        $path = $path . '/';
    return $path;
}

/**
 * 列出目录下的所有文件
 *
 * @param str $path 目录
 * @param str $exts 后缀
 * @param array $list 路径数组
 * @return array 返回路径数组
 */
function dir_list($path, $exts = '', $list = array()) {
    $path = dir_path($path);
    $files = glob($path . '*');
    foreach ($files as $v) {
        if (!$exts || preg_match("/\.($exts)/i", $v)) {
            if (!is_dir($v)) {  // 只读文件不读目录
                $list[] = $v;
            }
        }
    }
    return $list;
}

/**
 * 列出目录下的所有文件夹
 *
 * @param str $path 目录
 * @return array 返回路径数组
 */
function dir_listdir($path) {
    $path = dir_path($path);
    $files = glob($path . '*');
    return $files;
}

function thumb_dblxr($backimg, $width, $height, $newsfile) {
    list($s_w, $s_h, $exten) = getimagesize($backimg);
    //等比例固定算法
    if ($width && ($s_w < $s_h)) {
        $width = ($height / $s_h) * $s_w;
    } else {
        $height = ($width / $s_w) * $s_h;
    }

    $new = imagecreatetruecolor($width, $height); //创建一个真色彩
    //根据得到的扩展名不同不用的GD库函数处理
    if ($exten == 1) {
        $old = imagecreatefromgif($backimg);
    } elseif ($exten == 2) {
        $old = imagecreatefromjpeg($backimg);
    } elseif ($exten == 3) {
        $old = imagecreatefrompng($backimg);
    }
    //遇到gif背景透明色的处理
    $otcs = imagecolortransparent($old);
    if ($otcs >= 0 && $otcs < imagecolorstotal($old)) {
        $tran = imagecolorsforindex($old, $otcs);
        print_r($tran);
        $newtran = imagecolorallocate($new, $tran["red"], $tran["green"], $tran["blue"]);
        imagefill($new, 0, 0, $newtran);
        imagecolortransparent($new, $newtran);
    }

    imagecopyresampled($new, $old, 0, 0, 0, 0, $width, $height, $s_w, $s_h);
    //根据得到的扩展名不同不用的GD库函数处理
    if ($exten == 1) {
        imagegif($new, $newsfile);
    } elseif ($exten == 2) {
        imagejpeg($new, $newsfile);
    } elseif ($exten == 3) {
        imagepng($new, $newsfile);
    }
    imagedestroy($new);
    imagedestroy($old);
}

//图片裁剪
function cut_thumb($backimg, $cut_x, $cut_y, $cut_width, $cut_height, $newfile) {
    list($c_w, $c_h, $c_exten) = getimagesize($backimg);
    if ($c_exten == 1) {
        $back = imagecreatefromgif($backimg);
    } elseif ($c_exten == 2) {
        $back = imagecreatefromjpeg($backimg);
    } elseif ($c_exten == 3) {
        $back = imagecreatefrompng($backimg);
    }
    $c_new = imagecreatetruecolor($cut_width, $cut_height);
    imagecopyresampled($c_new, $back, 0, 0, $cut_x, $cut_y, $cut_width, $cut_height, $cut_width, $cut_height);
    if ($c_exten == 1) {
        imagegif($c_new, $newfile);
    } elseif ($c_exten == 2) {
        imagejpeg($c_new, $newfile);
    } elseif ($c_exten == 3) {
        imagepng($c_new, $newfile);
    }
    imagedestroy($back);
    imagedestroy($c_new);
}


function csubstr($str, $start, $length, $charset = "utf-8", $suffix = false) {

    if (function_exists("mb_substr")) {
        if (mb_strlen($str, $charset) <= $length)
            return $str;
        $slice = mb_substr($str, $start, $length, $charset);
    }

    else {

        $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";

        $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";

        $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";

        $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";

        preg_match_all($re[$charset], $str, $match);

        if (count($match[0]) <= $length)
            return $str;

        $slice = join("", array_slice($match[0], $start, $length));
    }

    if ($suffix)
        return $slice . "…";

    return $slice;
}






/**
* 可以统计中文字符串长度的函数
* @param $str 要计算长度的字符串
* @param $type 计算长度类型，0(默认)表示一个中文算一个字符，1表示一个中文算两个字符
*
*/
function abslength($str)
{
    if(empty($str)){
        return 0;
    }
    if(function_exists('mb_strlen')){
        return mb_strlen($str,'utf-8');
    }
    else {
        preg_match_all("/./u", $str, $ar);
        return count($ar[0]);
    }
}






?>
